ExcelVBAPartsCollection Home Excel Reference Manual DownLoad My Profile
Menu Back Next Links Excel Function Manual Myself My BBS


シート操作

 





シートの選択

1. シート名を指定してアクティブにする

処理内容:「Sheet1」をアクティブにします。
Sub SheetSelect_1()
Worksheets("Sheet1").Activate
End Sub

2. シートのインデックス番号を指定してアクティブにする

処理内容:「Sheet1」のインデックス番号を指定して「Sheet1」をアクティブにします。
Sub SheetSelect_2()
Worksheets(1).Activate
End Sub
インデックス番号は、同じ種類のシートに対して、シート見出しの並び順に基づいて左からの位置になります。

3. シートをアクティブにする(コード名・・オブジェクト名を指定)

処理内容:「Sheet1」をアクティブにします。
Sub SheetSelect_3()
sheet1.Activate
End Sub
新規ブックのシートタブを右クリックしてショートカットメニューの「コードの表示」を選択すると、VBAの編集画面になり、画面の左側に「Sheet1(Sheet1)」「Sheet2(Sheet2)」「Sheet3(Sheet3)」という 文字が表示されます。
 「Sheet1(Sheet1)」で、左側にある Sheet1がオブジェクト名、右側の( )内の Sheet1 がワークシート
のタブに表示されているシート名になります。

4. Select メソッドによりシートを選択する

処理内容:シート名「Sheet1」を選択します。
Sub SheetSelect_4()
Worksheets("Sheet1").Select
End Sub

5. 最後尾にあるシートを選択する

処理内容:Worksheets.Count でシートの枚数を取得し、これをシートのインデックス番号に利用
して最後尾のシートをアクティブにします。
Sub SheetSelect_5()
Dim N As Integer
N=ActiveWorkbook.Worksheets.Count
Worksheets(N).Activate
End Sub

6. 複数(Sheet1,3)のシートを選択する(インデックス番号を指定)

処理内容:シートのインデックス番号を配列にして、左から1番目と3番目のシートを選択します。
Sub SheetSelect_6()
Worksheets(Array(1,3)).Select
End Sub

7. 複数(Sheet1,3)のシートを選択する(シート名を指定)

処理内容:シート名を配列にして、「Sheet1」「Sheet3」を選択します。
Sub SheetSelect_7()
Worksheets(Array("Sheet1","Sheet3")).Select
End Sub





シート名の取得・変更

1. シート名を取得する

処理内容:「Sheet1」のシート名を取得してメッセージボックスに表示します。
Sub SheetName_1()
MsgBox Worksheets("sheet1").Name
End Sub

2. アクティブシートのシート名を取得する

処理内容:現在選択されているシート名を取得してメッセージボックスに表示します。
Sub SheetName_2()
MsgBox ActiveSheet.Name
End Sub

3. アクティブシートのインデックス番号を取得する

処理内容:現在選択されているシートのインデックス番号を取得してメッセージボックスに表示します。
Sub SheetName_3()
MsgBox ActiveSheet.Index
End Sub

4. アクティブシートのコードネーム(オブジェクト名)を取得する

処理内容:現在選択されているシートのオブジェクト名を取得してメッセージボックスに表示します。
Sub SheetName_4()
MsgBox ActiveSheet.CodeName
End Sub

5. シートの枚数を数える

処理内容:現在選択されているブックのシートの枚数を取得してメッセージボックスに表示します。
Sub SheetName_5()
MsgBox ActiveWorkbook.Worksheets.Count
End Sub

6. シートの名前を変更する

処理内容:シート名「Sheet1」を「TEST」に変更する。
Sub SheetName_6()
Sheets("Sheet1").Name = "TEST"
End Sub





シートの移動・複写

1. 同一ブック内の指定したシートの前に移動する

処理内容:シート「TEST」を「Sheet1」の前に移動します。
Sub Sheet_Move1()
Worksheets("TEST").Move Before:=Worksheets("Sheet1")
End Sub

2. 同一ブック内の指定したシートの後ろに移動する

処理内容:シート「TEST」を「Sheet1」の後ろに移動します。
Sub Sheet_Move2()
Worksheets("TEST").Move after:=Worksheets("Sheet1")
End Sub

3. 別のブックにシートを移動する

処理内容:シート「TEST」をブック名「VBA.xls」の3番目のシートの前に移動します。
Sub Sheet_Move3()
Worksheets("TEST").Move Before:=Workbooks("VBA.xls").Sheets(3)
End Sub

4. 新規ブックにシートを移動する

処理内容:シート「Sheet4」を新規ブックに移動します。
Sub Sheet_Move4()
Worksheets("Sheet4").Move
End Sub
このプログラムを実行すると、新規ブックが自動的に作成されて「Sheet4」が移動します。

5. 同一ブック内の指定したシートの前に複写する

処理内容:シート「TEST」を「Sheet1」の前に複写します。
Sub Sheet_Copy1()
Worksheets("TEST").Copy Before:=Worksheets("Sheet1")
End Sub

6. 同一ブック内の指定したシートの後ろに複写する

処理内容:シート「TEST」を「Sheet2」の後ろに複写します。
Sub Sheet_Copy2()
Worksheets("TEST").Copy After:=Worksheets("Sheet2")
End Sub

7. 別のブックにシートを複写する

処理内容:シート「TEST」をブック名「VBA.xls」の2番目のシートの前に複写します。
Sub Sheet_Copy3()
Worksheets("TEST").Copy Before:=Workbooks("VBA.xls").Sheets(2)
End Sub

8. 別のブックの指定位置に複数のシートを同時に複写する

処理内容:シート「TEST」を「Sheet2」の後ろに複写します。
Sub Sheet_Copy2()
X = Array("Sheet1", "Sheet2")
    Sheets(X).Copy Before:=Workbooks(Book2).Sheets(2)
End Sub

9. 新規ブックにシートを複写する

処理内容:シート「TEST」を新規ブックに複写します。
Sub Sheet_Copy4()
Worksheets("TEST").Copy
End Sub
このプログラムを実行すると、新規ブックが自動的に作成されてシート「TEST」が複写されます。

10. 指定範囲データを複数シートの同じ位置に複写する

処理内容:シート「Sheet1」の「A1:C5」のデータを「Sheet2」「Sheet3」の同じ位置に複写します。
Sub Sheet_Copy5()
Dim X As Variant
X = Array("Sheet1", "Sheet2", "Sheet3")
Sheets(X).FillAcrossSheets Worksheets("Sheet1").Range("A1:C5")
End Sub





シートの追加・削除

1. 選択したシートの前へシートを追加する(シート名は指定せず)

処理内容:シート「TEST」の前に新しいシートを追加します。
Sub Sheet_Add1()
Sheets("TEST").Select
ActiveWorkbook.Worksheets.Add
End Sub

2. アクティブシートの前へシートを追加する(シート名を指定)

処理内容:現在選択されているシートの前に新しいシート「Dummy」を追加します。
Sub Sheet_Add2()
Sheets.Add.Name = "Dummy"
End Sub

3. アクティブシートの後ろへシートを追加する

処理内容:現在選択されているシートの後ろに新しいシートを追加します。
Sub Sheet_Add3()
Dim シート名 As String
Sheets("TEST").Select
シート名 = ActiveSheet.Name
Worksheets.Add after:=Worksheets(シート名)
End Sub

4. 最後のシートの後へシートを追加する

処理内容:シートの最後尾に新しいシートを追加します。
Sub Sheet_Add4()
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
End Sub

5. シートがあるかチェックし、なければ追加する

処理内容:シート「検索シート名」を検索し、無ければ追加します。
Sub Sheet_Add5()
Scheck = 0
For Each sheet_name In Worksheets
If sheet_name.Name = ("検索シート名") Then
Scheck = 1
Exit For
End If
Next
If Scheck = 0 Then
Sheets.Add.Name = "検索シート名"
End If
End Sub





1. アクティブシート削除

処理内容:現在選択されているシートを削除します。
Sub Sheet_Delete1()
ActiveSheet.Delete
End Sub

2. シート名を指定して削除

処理内容:シート「Sheet1」を削除します。
Sub Sheet_Delete2()
Worksheets("Sheet1").Delete
End Sub

3. 削除確認メッセージを表示せずシート削除

処理内容:削除確認メッセージを出さずにシート「Sheet1」を削除します。
Sub Sheet_Delete3()
Application.DisplayAlerts = False
Worksheets("Sheet1").Delete
Application.DisplayAlerts = True
End Sub





シートの表示・非表示

1. シートを非表示にする

処理内容:シート「TEST」を非表示にします。
Sub Sheet_Visible1()
Worksheets("TEST").Visible=False
End Sub

2. シートを再表示する

処理内容:非表示にしたシート「TEST」を再表示します。
Sub Sheet_Visible2()
Worksheets("TEST").Visible=True
End Sub

3. 指定位置以降、最後尾までのシートを非表示にする

処理内容:左から2番目のシート以降、最後尾までのシートを非表示にします。
Sub Sheet_Visible3()
Scount=ActiveWorkbook.Worksheets.Count
For J = 2 To Scount
Worksheets(J).Visible = False
Next J
End Sub

4. シートを一括再表示する

処理内容:すべてのシートを検索して非表示であれば再表示します。
Sub Sheet_Visible4()
Dim myWS As Worksheet
For Each myWS In Worksheets
myWS.Visible = True
Next
End Sub

5. ユーザーが再表示できないようにシートを隠す

処理内容:Excel操作でユーザーが再表示できないようにシート「TEST」を非表示にします。(VBAで再表示は可能)
Sub Sheet_Visible5()
Worksheets("TEST").Visible = xlVeryHidden
End Sub

6. 上記で隠したシートを元に戻す

処理内容:Excel操作でユーザーが再表示できないように非表示にしたシート「TEST」を再表示します。
Sub Sheet_Visible6()
Worksheets("TEST").Visible = True
End Sub

7. シート見出し(タブ)を非表示にする

処理内容:シート見出し(タブ)をすべて非表示にします。
Sub Sheet_Visible7()
ActiveWindow.DisplayWorkbookTabs = False
End Sub

8. シート見出し(タブ)を再表示する

処理内容:シート見出し(タブ)をすべて再表示します。
Sub Sheet_Visible8()
ActiveWindow.DisplayWorkbookTabs = True
End Sub





シートの保護・非保護"


Protectメソッド(ワークシートの保護)の構文と意味
構文:expression.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly)
引     数 内               容
Password 設定したとき:パスワード文字列を指定(大文字と小文字を区別)。保護を解除するにはそのパスワードが必要。
省略したとき:パスワードの使用なしで保護解除できる。
DrawingObjects  描画オブジェクトを保護させるには、True(既定値)を指定。 
Contents  オブジェクト(セル)の内容を保護させるには、True(既定値)を設定
Scenarios  シナリオを保護するには、True(既定値)を指定。 
UserInterfaceOnly  Trueを指定すると画面上からの変更は保護されるが、マクロからの変更は保護されない。
省略したとき:マクロからも、画面上も変更することができない。  

1. シート全体を保護する

処理内容:現在表示されているシート全体を保護します。
Sub Sheet_Protect1()
ActiveSheet.Unprotect
ActiveSheet.Protect DrawingObjects:=True, Contents:=True
End Sub

2. 計算式入力セルだけを保護し、他のセルは書き込み可能とする

処理内容:数式が入力されているセルだけを保護し、他のセルは書き込み可能とします。
Sub Sheet_Protect2()
Cells.Select
With Selection
.Locked = False
.Specialcells(xlCellTypeFormulas).Locked = True
End With
ActiveSheet.Protect
End Sub

3. シートの特定のセルだけ書込み可能とし、他のセルは保護する

処理内容:セル「A1:G3」だけ書き込み可能とし、他のセルは保護します。
Sub Sheet_Protect3()
With Worksheets("Sheet1")
.Range("A1:G3").Locked = False
.protect
End With
End Sub

4. シートの保護を解除する

処理内容:現在表示されているシートの保護を解除します。
Sub Sheet_Protect4()
ActiveSheet.Unprotect
End Sub





シートの検索


1. ループによるシート検索

処理内容:シートを検索して、シート「TEST」が見つかったら表示します。
Sub Sheet_Search1()
Dim N As Integer,Check As Integer,I As Integer
On Error Resume Next
Check = 1
N = Worksheets.Count
For I = 1 To N
If Worksheets(I).Name = ("TEST") Then
Check = 0
Worksheets("TEST").Select
Exit For
End If
Next
If Check = 1 Then
MsgBox "シート「TEST」が見つかりません"
On Error GoTo 0
Exit Sub
End If
End Sub

2. Setステートメントによるシート検索

処理内容:シートを検索してシート「TEST」が見つかれば「存在します」、見つからなければ「存在
しません」をメッセージボックスに表示します。
Sub Sheet_Search2()
Dim Sh As Worksheet
On Error GoTo ErrTrap
Set Sh = Sheets("TEST")
MsgBox "シート「TEST」を表示します。"
Sh.Select
Set Sh = Nothing
Exit Sub
ErrTrap:
MsgBox "シート「TEST」は存在しません。"
End Sub





楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル